package com.example.chandao.controller;

import com.example.chandao.common.base.BaseController;
import com.example.chandao.common.model.ApiResult;
import com.example.chandao.pojo.BugTypeStatistics;
import com.example.chandao.pojo.ResearchUser;
import com.example.chandao.services.ResearchUserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/research")
public class ResearchUserController extends BaseController {

    @Resource
    private ResearchUserService researchUserService;


    /**
     * 获取全部用户的bug和任务以及状态分布具体信息
     * @param researchUser
     * @return
     */
    @GetMapping("/all/count")
    public ApiResult getCount(ResearchUser researchUser) {
        startPage();
        return ApiResult.page(researchUserService.getAllResearchUsersData(researchUser));
    }

    /**
     * 获取具体用户的bug以及状态分布具体信息
     * @param researchUser
     * @return
     */
    @GetMapping("/all/bug")
    public ApiResult getResearchUserBugCount(ResearchUser researchUser) {
        startPage();
        return ApiResult.page(researchUserService.getResearchUsersBugData(researchUser));
    }

    /**
     * 获取具体用户的任务以及状态分布具体信息
     * @param researchUser
     * @return
     */
    @GetMapping("/all/task")
    public ApiResult getResearchUserTaskCount(ResearchUser researchUser) {
        startPage();
        return ApiResult.page(researchUserService.getResearchUsersTaskData(researchUser));
    }

    /**
     * 获取具体用户的任务以及状态分布具体信息
     * @param researchUser
     * @return
     */
    @GetMapping("/all/user")
    public ApiResult getResearchUser(ResearchUser researchUser) {
        return ApiResult.success(researchUserService.getResearchUser(researchUser));
    }

    /**
     * 获取bug类型数据的详情信息
     * @param researchUser
     * @return
     */
    @GetMapping("/bug/type")
    public ApiResult getBugTypeStatistics(ResearchUser researchUser) {
        List<BugTypeStatistics> bugTypeStatistics = researchUserService.getBugTypeStatistics(researchUser);
        // 使用 LinkedHashMap 保持排序顺序
        Map<String, List<BugTypeStatistics>> resultMap = bugTypeStatistics.stream()
                .collect(Collectors.groupingBy(
                        BugTypeStatistics::getMonthWeek,  // 分组依据
                        LinkedHashMap::new,             // 指定有序 Map 实现
                        Collectors.toList()             // 收集器
                ));
        return ApiResult.success(resultMap);
    }

}
